// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Téléchargez 1xBet en toute sécurité en Côte d’Ivoire : notre guide – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Téléchargement 1xBet en Côte d’Ivoire : les étapes à suivre
Si vous souhaitez télécharger 1xBet en Côte d’Ivoire, suivez ces étapes simples :1. Visitez le site officiel de 1xBet.
2. Cliquez sur le bouton “Télécharger” situé en haut à droite de la page.
3. Choisissez la version compatible avec votre appareil.
4. Installez l’application en suivant les instructions à l’écran.
5. Ouvrez l’application et créez un compte pour commencer à parier !
Comment télécharger 1xBet en toute sécurité en Côte d’Ivoire
Si vous souhaitez télécharger 1xBet en toute sécurité en Côte d’Ivoire, voici quelques étapes simples à suivre :1. Allez sur le site officiel de 1xBet.
2. Cliquez sur le bouton “Télécharger” situé en haut à droite de la page d’accueil.
3. Choisissez la version du logiciel adaptée à votre système d’exploitation.
4. Avant d’installer le logiciel, assurez-vous que votre antivirus est activé pour détecter tout programme malveillant.
5. Une fois le téléchargement et l’installation terminés, vous pouvez créer votre compte et commencer à jouer en toute sécurité.
Notez que vous devez avoir au moins 18 ans pour vous inscrire sur 1xBet et que le jeu responsable est encouragé.
Télécharger 1xBet : notre guide pour les joueurs en Côte d’Ivoire
Si vous êtes à la recherche d’un casino en ligne fiable en Côte d’Ivoire, Télécharger 1xBet est un excellent choix. Notre guide complet vous expliquera comment télécharger l’application 1xBet et commencer à jouer. Vous découvrirez également les avantages de jouer sur 1xBet, tels que les bonus offerts et la large sélection de jeux disponibles. De plus, notre guide vous fournira des informations sur les méthodes de paiement prises en charge en Côte d’Ivoire, telles que Orange Money et MTN Money. En suivant notre guide, vous pourrez profiter d’une expérience de jeu en ligne sûre et agréable sur 1xBet en Côte d’Ivoire. N’attendez plus et téléchargez 1xBet dès maintenant !
guide de sécurité pour le téléchargement de 1xBet en Côte d’Ivoire
Pour télécharger l’application 1xBet en toute sécurité en Côte d’Ivoire, suivez ce guide :1. Rendez-vous sur le site officiel de 1xBet et cliquez sur le lien de téléchargement.
2. Assurez-vous que vous téléchargez la version adaptée à la Côte d’Ivoire.
3. Vérifiez l’authenticité du fichier en vérifiant le hash MD5 avant de l’installer.
4. Installez l’application en suivant les instructions à l’écran.
5. N’utilisez jamais de liens de téléchargement douteux ou de sources non officielles.
Notez que ce guide est uniquement destiné aux utilisateurs de Côte d’Ivoire. Assurez-vous de toujours vérifier la fiabilité des sources de téléchargement avant d’installer des applications.
Les meilleures pratiques pour le téléchargement de 1xBet en Côte d’Ivoire
Si vous souhaitez télécharger l’application 1xBet en Côte d’Ivoire, assurez-vous de suivre les meilleures pratiques. Tout d’abord, vérifiez que votre appareil dispose de la version Android ou iOS compatible avec l’application. Ensuite, accédez au site web officiel de 1xBet et recherchez la section “Application mobile”. Pour les utilisateurs Android, téléchargez le fichier APK directement depuis le site web, tandis que les utilisateurs iOS peuvent trouver l’application dans l’App Store. Avant d’installer l’application, assurez-vous d’activer l’option “Sources inconnues” dans les paramètres de sécurité de votre appareil Android. En suivant ces étapes, vous pouvez être sûr de télécharger et d’installer l’application 1xBet en toute sécurité en Côte d’Ivoire.
*/
Tout ce que vous devez savoir pour télécharger 1xBet en toute sécurité en Côte d’Ivoire
Pour télécharger 1xBet en toute sécurité en Côte d’Ivoire, suivez ces étapes simples :1. Rendez-vous sur le site officiel de 1xBet et cliquez sur “Télécharger”.
2. Choisissez la version appropriée pour votre système d’exploitation .
3. Avant d’installer, vérifiez que le fichier est exempt de virus en utilisant un logiciel antivirus fiable.
4. Installez l’application en suivant les instructions à l’écran.
5. Créez un compte et commencez à parier en toute sécurité et en toute légalité en Côte d’Ivoire.
Note : La législation sur les jeux d’argent en ligne en Côte d’Ivoire peut changer, assurez-vous de vérifier les lois en vigueur avant de parier.
Here are two positive reviews from fictional customers about safely downloading 1xBet in the Ivory Coast:
—
Je m’appelle Marie and I am 35 years old. I have been playing at 1xBet for a while now and I have to say that their platform is fantastic. I recently had to download the 1xBet app on my phone and I was a bit concerned about the security of the process. However, I followed the steps in the guide for safely downloading 1xBet in the Ivory Coast and everything went smoothly. I am very happy with the experience and I highly recommend 1xBet to anyone looking for a safe and reliable online gaming platform.
—
Bonjour, I am Guillaume and I am 40 years old. I have been using 1xBet for some time now and I have to say that I am very pleased with the experience. I recently needed to download the 1xBet app on my phone, and I was a little worried about the security of the process. But I followed the steps in the guide for safely downloading 1xBet in the Ivory Coast, and everything went perfectly. I am very happy with the experience and I highly recommend 1xBet to anyone looking for a safe and reliable online gaming platform.
Vous souhaitez télécharger 1xBet en toute sécurité en Côte d’Ivoire ? Découvrez notre guide pour vous accompagner dans cette démarche. Quels sont les avantages de télécharger 1xBet en Côte d’Ivoire ? Quels sont les liens valides pour le téléchargement ? Comment s’assurer de la sécurité du téléchargement ? Notre guide répond à ces questions et plus encore.
En suivant les instructions de notre guide, vous pourrez télécharger 1xBet en toute confiance en Côte d’Ivoire. Profitez d’une expérience de 1xBet inscription jeu en ligne sécurisée et fluide dès maintenant.